
#pragma once

#include <stdint.h>
#include <stdlib.h>

#include <arpa/inet.h>
#include <netinet/udp.h>
#include <bits/types.h>
#include <sys/types.h>

struct ipovly {

    caddr_t ih_next, ih_prev;
    u_char  ih_xl;  // unused
    u_char  ih_pr;  // protocol
    short   ih_len; // protocol length
    struct in_addr ih_src;
    struct in_addr ih_dst;
};

struct udpiphdr {

    struct ipovly   ui_i;   // overlaid ip structure
    struct udphdr   ui_u;   // udp header
};

#define ui_next ui_i.ih_next
#define ui_prev ui_i.ih_prev
#define ui_xl   ui_i.ih_xl
#define ui_pr   ui_i.ih_pr
#define ui_len  ui_i.ih_len
#define ui_src  ui_i.ih_src
#define ui_dst  ui_i.ih_dst

#define ui_sport ui_u.uh_sport
#define ui_dport ui_u.uh_dport
#define ui_ulen  ui_u.uh_ulen
#define ui_sum   ui_u.uh_sum



